<?php

/**
 * 公共操作管理
 * @copyright   Copyright (c) 2006 - 2010 DZH 友拓软件友拓通
 * @category   	公共操作
 * @package  	Model
 * @author    	黄明兴
 * @version 	2.1,2012-07-22
*/

class PublicPublicAction extends Action {
	// 检查用户是否登录

	protected function checkUser() {
		if(!isset($_SESSION[C('USER_AUTH_KEY')])) {
			$this->assign('jumpUrl','Public/login');
			$this->error('没有登录');
		}
		
	}

    // 后台首页 查看系统信息
    public function main() {
        $info = array(
            '操作系统'=>PHP_OS,
            '运行环境'=>$_SERVER["SERVER_SOFTWARE"],
            'PHP运行方式'=>php_sapi_name(),
            'ThinkPHP版本'=>THINK_VERSION.' [ <a href="http://thinkphp.cn" target="_blank">查看最新版本</a> ]',
            '上传附件限制'=>ini_get('upload_max_filesize'),
            '执行时间限制'=>ini_get('max_execution_time').'秒',
            '服务器时间'=>date("Y年n月j日 H:i:s"),
            '北京时间'=>gmdate("Y年n月j日 H:i:s",time()+8*3600),
            '服务器域名/IP'=>$_SERVER['SERVER_NAME'].' [ '.gethostbyname($_SERVER['SERVER_NAME']).' ]',
            '剩余空间'=>round((@disk_free_space(".")/(1024*1024)),2).'M',
            'register_globals'=>get_cfg_var("register_globals")=="1" ? "ON" : "OFF",
            'magic_quotes_gpc'=>(1===get_magic_quotes_gpc())?'YES':'NO',
            'magic_quotes_runtime'=>(1===get_magic_quotes_runtime())?'YES':'NO',
            );
        $this->assign('info',$info);
        $this->display();
    }

	// 用户登录页面
	public function login() {
		if(!isset($_SESSION[C('USER_AUTH_KEY')]) && !isset($_SESSION[C('ADMIN_AUTH_KEY')])) {
			$this->show();
		}else{
			$this->redirect(U('Index/index'));
		}
	}

	public function index()
	{
		//如果通过认证跳转到首页
		redirect(__APP__);
	}

	// 用户登出
    public function logout()
    {
        if(isset($_SESSION[C('USER_AUTH_KEY')])) {
			unset($_SESSION[C('USER_AUTH_KEY')]);
			unset($_SESSION);
			session_destroy();
        }
        redirect(U('Public/login'));
    }

	// 登录检测
	public function checkLogin() {
		if(empty($_POST['user_name'])) {
			$this->error(L('login_failed'));
		}elseif (empty($_POST['password'])){
			$this->error(L('login_failed'));
		}
        //生成认证条件
        $map            =   array();
		// 支持使用绑定帐号登录
		$map['user_name']	= $_POST['user_name'];
        $map["to_hide"]		= array('ELT',1);
        $authInfo = RBAC::authenticate($map);
        //使用用户名、密码和状态的方式进行认证
        if(empty($authInfo)) {
            $this->error(L('login_failed_state'));
        }elseif ($authInfo['user_password'] != md5($_POST['password'])){
        	$this->error(L('login_failed'));
        }else {
        	$ip = trim($authInfo['user_ip']);
            if(!empty($ip)) {
            	if(!RBAC::authip($authInfo['user_ip'])){
            		$this->error(L('login_failed_ip'));
            	}
            }
            // 登陆时的epass检查
            if ($authInfo['use_usbkey']>0 && $authInfo['usbkey']>0) {
				if(!strpos($_SERVER["HTTP_USER_AGENT"],'MSIE 9.0') && !strpos($_SERVER["HTTP_USER_AGENT"],'MSIE 8.0') && !strpos($_SERVER["HTTP_USER_AGENT"],'MSIE 7.0') && !strpos($_SERVER["HTTP_USER_AGENT"],'MSIE 6.0')){
					$this->error(L('usbkey_ie'));
				}
				if (empty($_POST['epass_data']) || empty($_POST['epass_no'])) {
					$this->error(L('login_failed_insert_epass'));
				}
				$bool = D('Epass')->checkEpass(array('epass_no'=>$_POST['epass_no'],'epass_data'=>$_POST['epass_data']),$authInfo['usbkey']);
				if ($bool===false) {
					$this->error(L('login_failed_error_epass'));
				}
			}
			
            D('User')->loginUserInfo($authInfo);
			// 缓存访问权限
            RBAC::saveAccessList($authInfo['id']);
			$this->success(L('login_success'));

		}
	}
	
	// 页面访问Epass检查
	public function checkEpass(){
		if ($_SESSION['LOGIN_USER']['epass_no']!=$_POST['epass_no'] || $_SESSION['LOGIN_USER']['epass_data']!=$_POST['epass_data']) {
			$this->error(L('login_failed_error_epass'));
		}
		$this->success();
	}
	
	// 查看客服管理
	public function service(){
		$array = M('Service')->select();
    	foreach ((array)$array as $value) {
    		$rs[$value['name']] = $value['value'];
    	}
    	$this->assign('rs',$rs);
    	$this->display();
	}
    
	// 快捷菜单
	public function shortMenu(){
    	$list = M('ShortcutMenu')->where('user_id='.getUser('id'))->order('menu_order asc,id desc')->select();
    	foreach ($list as &$value) {
    		$value['menu_name'] = title($value['action'],$value['model']);
    	}
    	$this->assign('list',$list);
    	$this->display();
    }
	 
}
?>